export default {
  // 格式化日期
  dateFormatString (dateStr) {
    if (dateStr) {
      return dateStr.substring(0, 4) + '-' + dateStr.substring(4, 6) + '-' + dateStr.substring(6, 8)
    } else {
      return ''
    }
  },
  // 获取字符串长度，中文两个字符
  getTrueLength (str) {
    let length = 0
    for (let i = 0; i < str.length; i++) {
      if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
        length += 2
      } else {
        length++
      }
    }
    return length
  },
  // 获取字符串长度，中文两个字符,到指定长度停止，用户截取字符串
  cutStr (str, maxlen) {
    if (!str) {
      return ''
    }
    let length = 0
    let maxIndex = str.length
    for (let i = 0; i < str.length; i++) {
      if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
        length += 2
      } else {
        length++
      }
      if (length >= maxlen) {
        maxIndex = i
        break
      }
    }
    return str.substring(0, maxIndex) + (maxIndex !== str.length ? '...' : '')
  },
  // 对象深度拷贝
  deepCopy (obj) {
    let result = Array.isArray(obj) ? [] : {}
    for (var key in obj) { // 可以循环对象和数组
      if (obj.hasOwnProperty(key)) { // 可以判断对象（key）和数组（index）
        if (typeof obj[key] === 'object' && obj[key] !== null) { // typeof 对象 | 数组 | null ，返回 'object'
          result[key] = this.deepCopy(obj[key]) // 递归复制
        } else {
          result[key] = obj[key]
        }
      }
    }
    return result
  },
  // 判断对象是否为Promise
  isPromise (obj) {
    return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'
  }
}
